package com.xinke.module.system.mapper.user;

import java.util.*;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xinke.component.common.pojo.PageResult;
import com.xinke.component.mybatis.mybatis.core.query.LambdaQueryWrapperExt;
import com.xinke.component.mybatis.mybatis.core.mapper.BaseMapperExt;
import com.xinke.module.system.model.entity.user.RoleMenuDO;
import org.apache.ibatis.annotations.Mapper;
import com.xinke.module.system.model.vo.user.*;

/**
 * 角色和菜单关联 Mapper
 *
 * @author yzx
 */
@Mapper
public interface RoleMenuMapper extends BaseMapperExt<RoleMenuDO> {

    default PageResult<RoleMenuDO> selectPage(RoleMenuPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperExt<RoleMenuDO>()
                .eqIfPresent(RoleMenuDO::getRoleId, reqVO.getRoleId())
                .eqIfPresent(RoleMenuDO::getMenuId, reqVO.getMenuId())
                .orderByDesc(RoleMenuDO::getRoleMenuId));
    }

    default List<RoleMenuDO> selectListByRoleId(Collection<Long> roleIds) {
        return selectList(RoleMenuDO::getRoleId, roleIds);
    }
    default List<RoleMenuDO> selectListByRoleId(Long roleId) {
        return selectList(RoleMenuDO::getRoleId, roleId);
    }
    default List<RoleMenuDO> selectListByMenuId(Long menuId) {
        return selectList(RoleMenuDO::getMenuId, menuId);
    }

    default void deleteListByRoleIdAndMenuIds(Long roleId, Collection<Long> menuIds) {
        delete(new LambdaQueryWrapper<RoleMenuDO>()
                .eq(RoleMenuDO::getRoleId, roleId)
                .in(RoleMenuDO::getMenuId, menuIds));
    }

}